package cn.itcast.crm.dao;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import cn.itcast.crm.domain.Customer;

/** 
 * 客户的实体类
 *
 * @author Shao-Fei Fan 
 * @version 1.0,2017年9月8日 下午8:54:47 
 */
@Repository
public interface CustomerRepository extends JpaRepository<Customer, Integer>,JpaSpecificationExecutor<Customer> {
	
	/**
	 * 获得已关联特定定区的客户列表
	 * @param fixedAreaId
	 * @return
	 */
	public List<Customer> findByFixedAreaId(String fixedAreaId);
	
	/**
	 * 获得未关联特定定区的客户列表
	 * @return
	 */
	public List<Customer> findByFixedAreaIdIsNull();
	
	/**
	 * 给客户绑定定区
	 * @param fixedAreaId
	 * @param id
	 */
	@Query("update Customer set fixedAreaId = ? where id = ?")
	@Modifying
	public void updateFixedAreaId(String fixedAreaId, Integer id);
	
	/**
	 * 解除特定区域的所有绑定客户
	 * @param fixedAreaId
	 */
	@Query("update Customer set fixedAreaId = null where fixedAreaId = ?")
	@Modifying
	public void cleanCustomer(String fixedAreaId);
	
	/**
	 * 根据电话查询所有客户
	 * @param telephone 
	 * @return
	 */
	public Customer findByTelephone(String telephone);
	
	/**
	 * 根据电话号码修改用户的type信息
	 * 
	 * @param telephone
	 */
	@Query("update Customer set type = 1 where telephone = ?")
	@Modifying
	public void updateType(String telephone);


}
